/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import mx.its.dsw2.zapateriaLes.bl.PedidosBlLocal;
import mx.its.dsw2.zapateriaLes.bl.ProductosBlLocal;
import mx.its.dsw2.zapateriaLes.bl.UsuariosBlLocal;
import mx.its.dsw2.zapateriaLes.modelo.DetallePedido;
import mx.its.dsw2.zapateriaLes.modelo.Pedidos;
import mx.its.dsw2.zapateriaLes.modelo.Productos;
import mx.its.dsw2.zapateriaLes.modelo.Usuarios;

/**
 *
 * @author lesly
 */
@ManagedBean
@SessionScoped
public class PedidosBean {

    @EJB
    private UsuariosBlLocal usuariosBl;
    @EJB
    private ProductosBlLocal productosBl;
    @EJB
    private PedidosBlLocal pedidosBl;
    private List<Productos> listaProductos;
    private List<Pedidos> listaPed;
    private List<DetallePedido> listaDetallePed;
    private Pedidos pedido;
    private DetallePedido detallePedido;
    private String accion = "";
    private boolean visible = false;
    private int idUsuarioSeleccionado;
    private int productoselect;
    private String codigoProducto;
    private int cantidad;
    private Usuarios user;
    private Productos producto;
    private double total;

    /**
     * Creates a new instance of PedidosBean
     */
    public PedidosBean() {
        pedido = new Pedidos();
        listaProductos = new ArrayList<Productos>();
    }

    public double getTotal() {
        return total;
    }

    public void setTotal(double total) {
        this.total = total;
    }

    public int getCantidad() {
        return cantidad;
    }

    public void setCantidad(int cantidad) {
        this.cantidad = cantidad;
    }

    public String getCodigoProducto() {
        return codigoProducto;
    }

    public void setCodigoProducto(String codigoProducto) {
        this.codigoProducto = codigoProducto;
    }

    public int getIdUsuarioSeleccionado() {
        return idUsuarioSeleccionado;
    }

    public void setIdUsuarioSeleccionado(int idUsuarioSeleccionado) {
        this.idUsuarioSeleccionado = idUsuarioSeleccionado;
    }

    public boolean isVisible() {
        return visible;
    }

    public void setVisible(boolean visible) {
        this.visible = visible;
    }

    public int getProductoselect() {
        return productoselect;
    }

    public void setProductoselect(int productoselect) {
        this.productoselect = productoselect;
    }

    public Usuarios getUser() {
        return user;
    }

    public void setUser(Usuarios user) {
        this.user = user;
    }

    public List<Productos> getListaProductos() {
        // listaProductos=productosBl.getAll();
        return listaProductos;
    }

    public List<Pedidos> getListaPed() {
        listaPed = pedidosBl.getAll();
        return listaPed;
    }

    public void setListaPed(List<Pedidos> listaPed) {
        this.listaPed = listaPed;
    }

    public List<DetallePedido> getListaDetallePed() {
        return listaDetallePed;
    }

    public void setListaDetallePed(List<DetallePedido> listaDetallePed) {
        this.listaDetallePed = listaDetallePed;
    }

    public Pedidos getPedido() {
        return pedido;
    }

    public void setPedido(Pedidos pedido) {
        this.pedido = pedido;
    }

    public DetallePedido getDetallePedido() {
        return detallePedido;
    }

    public void setDetallePedido(DetallePedido detallePedido) {
        this.detallePedido = detallePedido;
    }

    public void agregarProductos(ActionEvent evnt) {
        Productos p = productosBl.buscarProductoPorPedido(codigoProducto);
        if (p != null && !listaProductos.contains(p)) {
            listaProductos.add(p);
        }
        
       // visible=false;
    }

    public void totalLinea(ActionEvent evnt){
    total=producto.getPrecio()*cantidad;
    }
     public void prepararNuevoProd() {
        accion = "Nuevo";
        pedido = new Pedidos();
        visible = true;
    }
    public void mostrarContenido(ActionEvent evnt) {
        visible = true;
        user = usuariosBl.findById(idUsuarioSeleccionado);
    }

    public void prepararEditar(ActionEvent evt) {
        accion = "Editar";
        int index = Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
        pedido = listaPed.get(index);
    }

    public String accionAceptar() {
        if (!listaProductos.isEmpty()) {
            pedido.setIdUsuarios(usuariosBl.findById(idUsuarioSeleccionado));
            return "PedidosConfirmar";
        } else {
            return "PedidosCrearEditar";
        }
    }

    public String llamadaPaginas() {
        String page = "";
        if (accion.equalsIgnoreCase("Editar") || accion.equalsIgnoreCase("Nuevo")) {
            page = "PedidosCrearEditar";
        } else {
            if (accion.equalsIgnoreCase("Eliminar")) {
                page = "PedidoLista";
            }
        }
        return page;
    }

    public void eliminar(ActionEvent evt) {
        int index = Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
        listaProductos.remove(index);
    }

    public String procesarAccion() {
        if (accion.equalsIgnoreCase("Nuevo")) {
            Pedidos p = new Pedidos();
            p.setIdUsuarios(user);
            pedidosBl.register(p, listaProductos);
        } else {
            if (accion.equalsIgnoreCase("Editar")) {
            }
        }
        accion = "";
        return "PedidoLista";
    }

    public void prepararNuevo() {
        accion = "Nuevo";
        pedido = new Pedidos();
        listaProductos.clear();
        visible = false;
    }
    
}